 package com.qf.blog.web.job;

 import com.qf.blog.web.service.impl.InvitataionScoreService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;

 /**
  * @Author:zxc
  * @Description: 定时任务，帖子分数
  */
 @Component
 @Slf4j
 public class InvitataionScoreJob {

//     @Scheduled(cron = "0/4 * * * * *") // 这里写的是表达式
//     public void scoreJob() {
//         log.debug("定时任务运行。。。。");
//     }
     @Autowired
     private InvitataionScoreService scoreService;

     // 定时任务调用的默认是单线程的，需要改成多线程来实现，否则会出现任务阻塞
     // 表达式满足就会调用这个方法
     @Scheduled(cron = "0/20 * * * * *") // 这里写的是表达式
     public void scoreJob() {
         new Thread(() -> {

             // 1.先看下redis中是否有需要计算的帖子
             Long size = scoreService.getInvitationSize();
             if (size == 0) {
                 log.info("本次任务没有帖子需要计算,任务结束");
                 return;
             }

             // 2.计算帖子分数
             scoreService.refreshScore();
         }).start();
     }
 }
